package hu.pasq.dipterv.service;

import hu.pasq.dipterv.domain.BaseEntity;

import java.io.Serializable;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

public class GenericService<ENTITY extends BaseEntity, Long extends Serializable, REPO extends JpaRepository<ENTITY, Long>> {

	@Autowired
	protected REPO repo;

	public <S extends ENTITY> S save(S entity) {
		return repo.save(entity);
	}

	public List<ENTITY> findAll() {
		return repo.findAll();
	}

	public ENTITY findOne(Long id) {
		return repo.findOne(id);
	}
	
//	public ENTITY getOne(Long id) {
//		return repo.getOne(id);
//	}

	// public Page<ENTITY> findAll(Pageable pageable) {
	// return repo.findAll(pageable);
	// }
	//
	// public boolean exists(Long id) {
	// // TODO Auto-generated method stub
	// return false;
	// }

	// public long count() {
	// return repo.count();
	// }
	//
	// public void delete(Long id) {
	// // TODO Auto-generated method stub
	//
	// }
	//
	// public void delete(ENTITY entity) {
	// // TODO Auto-generated method stub
	//
	// }
	//
	// public void delete(Iterable<? extends ENTITY> entities) {
	// // TODO Auto-generated method stub
	//
	// }
	//
	// public void deleteAll() {
	// // TODO Auto-generated method stub
	//
	// }

	// public List<ENTITY> findAll(Sort sort) {
	// // TODO Auto-generated method stub
	// return null;
	// }
	//
	// public List<ENTITY> findAll(Iterable<Long> ids) {
	// // TODO Auto-generated method stub
	// return null;
	// }
	//
	// public <S extends ENTITY> List<S> save(Iterable<S> entities) {
	// // TODO Auto-generated method stub
	// return null;
	// }
	//
	// public void flush() {
	// // TODO Auto-generated method stub
	//
	// }
	//
	// public <S extends ENTITY> S saveAndFlush(S entity) {
	// // TODO Auto-generated method stub
	// return null;
	// }
	//
	// public void deleteInBatch(Iterable<ENTITY> entities) {
	// // TODO Auto-generated method stub
	//
	// }
	//
	// public void deleteAllInBatch() {
	// // TODO Auto-generated method stub
	//
	// }

}
